home *** CD-ROM | disk | FTP | other *** search
- Setup:
- DIM Waveform%(256)
- DEF FNYWaveform(a)=ABS(Waveform%(a)-128)
-
- SCREEN 1,320,200,2,1
- WINDOW 2,"Waveform",(0,0)-(256,63),22,1
-
- FOR x=0 TO 256
- Waveform%(x)=127*SIN(x/20)
- NEXT x
-
-
- WINDOW 3,"Function",(195,80)-(310,175),22,1
- WINDOW OUTPUT 3
- LINE (5,5)-(55,30),1,b
- PSET (5,17)
- FOR x=0 TO 48
- LINE -((x+5),17-10*SIN(x/3.8))
- NEXT x
- LINE (59,5)-(110,30),1,b
- LINE (59,18)-(67,7) : LINE -(83,27)
- LINE -(99,7) : LINE -(107,18)
- LINE (5,35)-(55,60),1,b
- LINE (7,47)-(7,37)
- LINE -(18,37) : LINE -(18,57)
- LINE -(30,57) : LINE -(30,37)
- LINE -(41,37) : LINE -(41,57)
- LINE -(53,57) : LINE -(53,47)
- LINE (59,35)-(110,60),1,b
- LOCATE 6,7 : PRINT "Clear"
- LINE (5,65)-(55,90),1,b
- LOCATE 9,2 : PRINT "Save"
- LINE (59,65)-(110,90),1,b
- LOCATE 9,7 : PRINT "Load"
-
- WINDOW OUTPUT 2
- GOSUB ShowWave
-
-
- ON MOUSE GOSUB MouseControl
- MOUSE ON
-
- WINDOW 3
-
- KeyInput:
- a$=INKEY$
- F=0
- IF a$="" THEN F=0 : GOTO KeyInput
- IF a$=CHR$(9) THEN F=261.63
- IF a$="1" THEN F=277.18
- IF a$="q" THEN F=293.66
- IF a$="2" THEN F=311.13
- IF a$="w" THEN F=329.63
- IF a$="e" THEN F=349.23
- IF a$="4" THEN F=369.99
- IF a$="r" THEN F=392!
- IF a$="5" THEN F=415.3
- IF a$="t" THEN F=440!
- IF a$="6" THEN F=466.16
- IF a$="y" THEN F=493.88
- IF a$="u" THEN F=523.25
- IF a$="8" THEN F=554.37
- IF a$="i" THEN F=587.58
- IF a$="9" THEN F=622.25
- IF a$="o" THEN F=659.28
- IF a$="p" THEN F=698.48
- IF a$="-" THEN F=739.99
- IF a$="[" THEN F=784!
- IF a$="=" THEN F=830.61
- IF a$="]" THEN F=880
- IF a$=CHR$(93) THEN F=932.33
- IF a$=CHR$(13) THEN F=987.76
- IF a$=CHR$(139) THEN F=1046.52
- IF F=0 THEN KeyInput
-
- Play:
- Vol=127 : IF F=0 THEN l=0
- SOUND WAIT
- SOUND F,3,Vol,0
- SOUND F,3,Vol,1
- SOUND RESUME
- GOTO KeyInput
-
- MouseControl:
- IF WINDOW(0)=2 THEN AlterWaveform
- IF WINDOW(0)=3 THEN AlterFunction
- RETURN
-
- AlterWaveform:
- WINDOW 2
- WHILE MOUSE(0)<0
- x=MOUSE(5)
- IF x>256 THEN GOSUB ShowWave : RETURN
- IF x<1 THEN x=1
- y=MOUSE(6)
- IF y> 63 THEN GOSUB ShowWave :RETURN
- LINE (x-1,FNYWaveform(x-1)/4) - (x,FNYWaveform(x)/4),0
- LINE (x-1,FNYWaveform(x-1)/4)-(x,y),1
- Waveform%(x)=127-(y*4)
- WEND
- GOSUB ShowWave
- RETURN
-
- AlterFunction:
- Test=MOUSE(0)
- x=MOUSE(3)
- y=MOUSE(4)
- IF x>4 AND x<56 AND y>4 AND y<31 THEN
- WINDOW 3 : PAINT (7,6),3,1
- FOR x=0 TO 256
- Waveform%(x)=127*SIN(x/20)
- NEXT x
- GOSUB ShowWave
- WINDOW 3 : PAINT (6,6),0,1
- END IF
- IF x>58 AND x<111 AND y>4 AND y<31 THEN
- WINDOW 3 : PAINT (60,6),3,1
- FOR x=0 TO 256
- IF x<41 THEN Waveform%(x)=x*3 : a=x*3
- IF (x>=41 AND x<126) OR (x>=210) THEN a=a-2.57 : Waveform%(x)=a
- IF x>=126 AND x<210 THEN a=a+2.57 : Waveform%(x)=a
- NEXT x
- GOSUB ShowWave
- WINDOW 3 : PAINT (60,6),0,1
- END IF
- IF x>4 AND x<61 AND y>34 AND y<61 THEN
- WINDOW 3 : PAINT (6,36),3,1
- FOR x=0 TO 256
- IF x<64 OR (x>=128 AND x<191) THEN Waveform%(x)=127
- IF (x>=64 AND x<128) OR x>192 THEN Waveform%(x)=-128
- NEXT x
- GOSUB ShowWave
- WINDOW 3 : PAINT (6,36),0,1
- END IF
- IF x>58 AND x<111 AND y>34 AND y<61 THEN
- WINDOW 3
- PAINT (60,36),3,1
- FOR x=0 TO 256
- Waveform%(x)=0
- NEXT x
- GOSUB ShowWave
- WINDOW 3 : PAINT (60,36),0,1
- END IF
- IF x>4 AND x<61 AND y>64 AND y<91 THEN
- WINDOW 3
- PAINT (6,66),3,1
- GOSUB EnterName
- IF Nam$="" THEN PAINT (6,66),0,1 : RETURN
- OPEN Nam$ FOR OUTPUT AS 1
- FOR x=0 TO 256
- PRINT #1,CHR$(127-Waveform%(x));
- NEXT x
- CLOSE 1
- WINDOW 3 : PAINT (6,66),0,1
- END IF
- IF x>58 AND x<111 AND y>64 AND y<91 THEN
- WINDOW 3
- PAINT (62,66),3,1
- GOSUB EnterName
- IF Nam$="" THEN PAINT (62,66),0,1 : RETURN
- OPEN Nam$ FOR INPUT AS 1
- FOR x=0 TO 256
- Waveform%(x)=127-ASC(INPUT$(1,1))
- NEXT x
- CLOSE 1
- WINDOW 3 : PAINT (62,66),0,1
- GOSUB ShowWave
- END IF
- RETURN
-
- ShowWave:
- WINDOW 2 : CLS
- FOR x=1 TO 256
- LINE (x-1,FNYWaveform(x-1)/4)-(x,FNYWaveform(x)/4),1
- NEXT x
- WINDOW 3
- WAVE 0,Waveform%
- WAVE 1,Waveform%
- RETURN
-
- EnterName:
- WINDOW 4,"Enter Filename:",(5,100)-(300,110),0,1
- CLS : LINE INPUT Nam$
- IF Nam$="=" OR Nam$="*" THEN Nam$=Altname$
- IF Nam$<>"" THEN Altname$=Nam$
- WINDOW CLOSE 4 : WINDOW 3
- RETURN
-
-